package xalan.smartgwt.record;

import java.util.HashMap;
import java.util.Map;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * 
 * Klasa reprezentująca rekord przesyłany do klienta SmartGWT.
 * 
 * Jest to odpowiednik obiektu. Zawiera listę parametrów w postaci klucz wartość.
 * Parametr odpowiada atrybutowi obiektu.
 * 
 * @author Xalan
 *
 */
public class Record {
	/**
	 * Nazwa elementu korzenia XML
	 */
	public static final String RECORD_ELEMENT = "record";
	
	private Map<String, Object> params = new HashMap<String, Object>();
	
	public void addParam(String key, Object value) {
		params.put(key, value);
	}	

	public Map<String, Object> getParams() {
		return params;
	}
	
	/**
	 * Tworzy element XML reprezentujący ten rekord
	 * 
	 * @param doc dokument, w którym zostanie utworzony ten element
	 * @return element XML
	 */
	public Element serializeRecordToXML(Document doc) {
		Element record = doc.createElement(RECORD_ELEMENT);
		for(String k : this.getParams().keySet()) {
			Element key = doc.createElement(k);
			Object v = this.getParams().get(k);
			key.setTextContent(v != null ? v.toString() : "");
			record.appendChild(key);
		}
		return record;
	}
	
}
